package com.ruoyi.base.utils.number;

import java.math.BigDecimal;

/**
 * 数字工具类
 *
 * @author lcf
 */
public class NumberUtils {

    /**
     * 检查是否为空
     */
    public static boolean isEmpty(Long id) {
        return id == null || id == 0;
    }

    /**
     * 检查是否为空
     */
    public static boolean isEmpty(Integer id) {
        return id == null || id == 0;
    }

    /**
     * 检查是否为空
     */
    public static boolean isEmpty(Double value) {
        return value == null || value == 0;
    }

    /**
     * 检查是否为空
     */
    public static boolean isEmpty(BigDecimal value) {
        return value == null || BigDecimal.ZERO.compareTo(value) == 0;
    }

    /**
     * 检查是否为空
     */
    public static boolean isNotEmpty(BigDecimal value) {
        return !isEmpty(value);
    }

    /**
     * 检查是否为空
     */
    public static boolean isNotEmpty(Double value) {
        return !isEmpty(value);
    }

    /**
     * 检查是否为空
     */
    public static boolean isNotEmpty(Long id) {
        return !isEmpty(id);
    }

    /**
     * 检查是否为空
     */
    public static boolean isNotEmpty(Integer id) {
        return !isEmpty(id);
    }


    /**
     * 提供精确的加法运算。
     *
     * @param v1 被加数
     * @param v2 加数
     * @return 两个参数的和
     */
    public static BigDecimal add(double v1, double v2) {
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.add(b2);
    }

    /**
     * 提供精确的乘法运算。
     *
     * @param v1 被乘数
     * @param v2 乘数
     * @return 两个参数的积
     */
    public static BigDecimal multiply(double v1, double v2) {
        BigDecimal b1 = new BigDecimal(Double.toString(v1));
        BigDecimal b2 = new BigDecimal(Double.toString(v2));
        return b1.multiply(b2);
    }
}
